#ifndef _SASTE_LOOP_ABSTRACT_H_
#define _SASTE_LOOP_ABSTRACT_H_

#include <list>
#include <Saste/Loop/Event/Abstract.h>

namespace Saste
{
    namespace Loop
    {
        class Abstract
        {
            typedef std::list<Event::Abstract*> eventsList;

            public:
                bool registerEvent(Event::Abstract* event);
                void loop();

            protected:
                eventsList events;
                virtual void beginLoop() =0;
                virtual void endLoop() =0;
                virtual int getEventCode() =0;
        };

        #include <Saste/Loop/Abstract.cpp>
    }
}

#endif
